package abstract_class;

//抽象类(用abstract修饰)
abstract class Shape {
    //抽象方法(用abstract修饰)  一般都有
    public abstract void draw();

    //普通成员变量和方法    可有可无
    private String name;
    public void func() {

    }
    public Shape() {

    }
}

//抽象类
abstract class Shape {
    //抽象方法
    abstract public void drawA();
    abstract public void drawB();
}

//子类继承父类并重写抽象方法
class Circle extends Shape {
    public void drawA() {

    }
    public void drawB() {

    }
}
//继承父类但仍为抽象方法,此时它是一个有三个抽象方法的抽象类
abstract class All extends Shape{
    abstract public void func();
}

//final修饰表示常量,static修饰表示全局变量
//public和final,public和static修饰成员方法时，可以同时存在，如果final和static,那么只有static起作用，为全局变量
//public和final和static修饰成员变量时，可以同时存在,同时修饰表示全局常量

//A为接口名称，同样用一个项目中只能有一个public类或public接口
interface A {
    abstract public void method1();
    void method2();//默认为abstract public(可交换位置)，抽象类中则不能省略
    abstract void method3();
    public void method4();
    //以上四种都是抽象方法，但更推荐第二中，更为简洁
}

